unsigned char 无符号整形 减法运算
对于一个字节来说:
unsigned char : 0 ~ 255 0000 0000 ~ 1111 1111
char :-128 ~ 127 -128 ~ -1 1000 0000 ~ 1111 1111 0 ~ 127 0000 0000 ~ 0111 1111
(-128 的补码是1000 0000,它没有对应的原码、反码,其推导是根据 -128 + 127 = -1,即1000 0000 + 0111 1111 = 1111 1111)
计算机CPU只有加法逻辑运算器,对于减法运算,是使用两个数的补码进行加法运算。
#include "stdafx.h"
#include <stdio.h> void print_2(unsigned char val2)
{
unsigned char *p = (unsigned char*)&val2; //从低位到高位,低端字节计算机 for (int i = ; i >= ; i--)
{
if(val2 & ( << i))
printf("");
else
printf("");
}
printf(" "); } int main(int argc, char **argv)
{
unsigned char a = ; //补码:0000 0001
unsigned char b = ; //补码:0000 0010
unsigned char c = a - b; //补码:0000 0001 + (-2)1111 1110 = (-1)1111 1111 printf("%02x,%02x,%02x\n", a, b, c);
printf("%d,%d,%d\n", a, b, c);
print_2(a);
print_2(b);
print_2(c); char d = a - b;
printf("\n%d\n", d); getchar();
}
内存中的数据结果是 1111 1111 ,如果按照unsigned char 解释即为255,按照char 解释则为 -1。
计算机补码概念剖析
unsigned char 无符号整形 减法运算的更多相关文章
- iOS NSArray 的count方法返回的是无符号整形!
){ return cell; } 这样写是错误的!!!当数组为空时,由于count方法返回的是无符号整形,没有负数,self.requests.count -1是一个非常大的正数! 正确写法: &g ...
- 利用Java位运算符,完成Unsigned转换(无符号)
方案二:利用Java位运算符,完成Unsigned转换. 正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码: publi ...
- c#中将IP地址转换成无符号整形数的方法与逆变换方法
我们知道 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址. 按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节.而c#中 ...
- Integral Promotions整数提升和符号扩展(char,unsigned char,signed char)
以下来自msdn: Objects of an integral type can be converted to another wider integral type (that is, a ty ...
- MySQL学习----unsigned 无符号的总结
unsigned 为“无符号”的意思, unsigned,zerofill 既为非负数,用此类型可以增加数据长度, 例如如果 int最大是65535,那 ...
- char类型到底是有符号还是无符号
根据c标准,char类型到底是有符号整数类型还是无符号整数类型,这取决于c实现,也就是c编译器的作者的想法:( 那么,如何快速的编写一个检测程序,查看当前编译器如何对char进行定义? #includ ...
- C++ char, unsigned char, signed char
C语言中的 char, unsigned char, signed char 一.他们是什么? signed char是有符号的,但是unsigned char没有符号,两者在存储上没有任何区别都是8 ...
- c语言中 char* 和 unsigned char* 的区别浅析(转)
原文:https://blog.csdn.net/guotianqing/article/details/77341657 背景最近在项目中遇到了一个编译警告,是因为定义的变量为char[],而在使用 ...
- char 与 unsigned char的本质区别
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同 ...
随机推荐
- hihoCoder 数论五·欧拉函数
题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...
- 2015-11-04 报表 (asp.net 部分)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Scrap_p.aspx.cs& ...
- 【20160924】GOCVHelper MFC增强算法(2)
//创建或续写目录下的csv文件,填写“文件位置-分类”对 int writeCsv(const string& filename,const Vector<pair<st ...
- apache-common pool的使用
Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/&quo ...
- PHP处理数据--excel与scv与json
今天要处理两个excel.两个循环嵌套验证重复性.所以写了几个函数来处理20亿次的数据量. 一.把excel读出来,保存为json.利用phpexcel插件: <?php header(&quo ...
- c++类中的常量
C++类中的常量 由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现.const 数据成员的确是存在的,但其含义却不是我们所期望的.cons ...
- Winform容器标签 打印标签 对话框控件
一.容器标签 布局: Anchor:锁定位置,指定与窗口容器的边缘位置,会随着窗口大小的改变而改变: Dock:填充窗口的位置.一般与容器标签同时使用. 1.Panel:对控件进行分组.可以独立布局, ...
- SQL高级查询——50句查询(含答案)
-一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ----------------- ...
- 用于 ‘Suse‘ Linux 包管理的 Zypper 命令大全
SUSE( Software and System Entwicklung,即软件和系统开发.其中‘entwicklung‘是德语,意为开发)Linux 是由 Novell 公司在 Linux 内核基 ...
- 如何用linux远程登录windows计算机
大家可能试过用windows远程登录另一个windows pc机,今天大家将会学到如何用 linux远程登录你的windows系统. 首先大家要做到得救是将自己linux和windows操作机的IP地 ...