1 数据类型

java中:

byte      8位   1字节

short/char  16位    2字节

int        32位    4字节

long        64位  8字节

float      32位  4字节

double     64位  8字节

c在x8632位中

printf("%d\n",sizeof(char)); //1字节
printf("%d\n",sizeof(short)); //2
printf("%d\n",sizeof(int)); //4
printf("%d\n",sizeof(long)); //4
printf("%d\n",sizeof(float)); //4
printf("%d\n",sizeof(double)); //8

其指针大小均为4字节,寻址32位。

2 原补码

作用:一是减法变加法,二是正0与负0一致

结果:计算机中数值以补码形式表示

具体:-128=[1000 0000]补,32位系统中表示值为[-128, 127],0其补码仅为[0000 0000]

练习:

1)

int main()

{

char a=64;

a <<=1;

printf(“%d ”,a);

a>>=1;

printf(“%d ”,a);

return 0;

}

结果:-128 -64

说明:

有符号数据类型的移位操作:
对于char、short、int、long这些有符号的数据类型:

负数 左移:符号位始终为1,其他位左移  
正数 左移:所有位左移,即 <<,可能会变成负数  
负数 右移:取绝对值,然后右移,再取相反数 (对于x86平台的gcc编译器,最高位移入1,也就是仍保持负数的符号位,这种处理方式对负数仍然保持了“右移1位相当于除以2”的性质。)
正数 右移:所有位右移,即 >> ,高位补0
一个程序如果使用了有符号数的右移位操作,它就是不可移植的
因为在C语言标准中,只规定了无符号数的移位操作是采用逻辑移位(即左移、右移都是使用的逻辑左移和逻辑右移)。
而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0)。

2)

#include<iostream.h>
void main()
{
 short int n=-1;
 cout<<(unsigned short int)n<<endl;
}

结果:32位操作系统下为:65535

无符号即将符号位算为数值位考虑。

3)

unsigned char a=0xA5;
unsigned char b=~a<<4;
unsigned char c=~a>>4;
printf("b=%d\n",b); //b=160
printf("c=%d\n",c); //c=245

int i=4;
printf("i=4 left shift%d\n",~i<<2); //i=4 left shift -20
printf("i=4 right shift%d\n",~i>>2); //i=4 right shift -2

int j=-6;
printf("j=-6 left shift%d\n",~j<<2); //j=-6 left shift 20
printf("j=-6 right shift%d\n",~j>>2); //j=-6 right shift 1

3 进制转换

10进制转为R进制

  整数部分通过连续/R,取在[0, R-1]间的余倒着连起。

  小数部分通过连续*R,取结果中的整数顺着连起。

  将两部分相加,即可。

转载于:https://www.cnblogs.com/ele7en/archive/2012/08/11/2633398.html

数据类型长度、原反补码及移位相关推荐

  1. 原反补码(从地址里讲解原反补)

    简介数据的原反补码 一.概念的介绍 1. 原码:第一位为符号位 ,正数存储的是0,负数存储的是1 2. 反码:1->0 0->1 符号位不变 3. 补码:补码就是反码+1 4. 注意:正数 ...

  2. 原反补码的相互转换、补码加减法计算规则及例题

    原.反.补码 正整数的原码.反码和补码是一样的 对于负数: 1.2. 原码 ⇋ 反码:符号位不变,数值位按位取反 3.4. 原码 ⇋ 补码:符号位不变,数值位按位取反,末位 + 1 5. 反码 → 补 ...

  3. 补码加减c语言,C语言计算器含二进制数加减原反补码(自己的期末作业)

    用C++6.0编写的计算器,内含整数小数加减乘除.二进制数组加减及求原码补码反码! #include #include int main() { void top(); void no1(),no2( ...

  4. c语言实现补码加减,C语言计算器含二进制数加减原反补码(自己的期末作业)

    用C++6.0编写的计算器,内含整数小数加减乘除.二进制数组加减及求原码补码反码! #include #include int main() { void top(); void no1(),no2( ...

  5. 2022-03-30 西安 javaSE(02)基本数据类型转换、自增运算、三元运算符、原反补码位运算

    基本数据类型取值范围从小到大 1.byte<short<int<long<float<double 面试题:long占8个字节,float占4个字节,为什么float的取 ...

  6. c语言原码 补码 反码,C语言 原码--反码--补码

    //原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...

  7. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...

    计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...

  8. java反码补码原码作用_java原码补码反码关系解析

    本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...

  9. 真值 原码 补码 反码 移码

    真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 > ...

最新文章

  1. python安装包为什么这么小-python安装后为什么找不到包
  2. Linux学习 - sed使用
  3. Linux debian 查看CPU温度
  4. 【Python系列】python GUI界面
  5. Linux 命令(71)—— ldconfig 命令
  6. HDU2008 数值统计【序列处理】
  7. Android开发系列——实战篇14:NFC开发(理论篇)
  8. 大型网站技术架构 读书笔记 (二) 大型网站架构模式
  9. 主板usb接口全部失灵_usb接口没反应,主板usb接口全部失灵
  10. swfupload 无法加载_SwfUpload在IE10上不出现上传按钮的解决方法
  11. OpenKG开源系列 | 大规模中文概念图谱OpenConcepts (浙江大学)
  12. mssql用户/角色无法查询sys.dm_tran_locks视图;消息 297,级别 16,状态 1,第 1 行 用户没有执行此操作的权限。
  13. 如何分分钟成为Java嵌入式开发人员
  14. 文件和文件夹的操作——文件流的使用
  15. 2020.2.19作业单
  16. IPv6 NDP邻居发现协议 1
  17. 电商系统:优惠券实体设计、数据库表设计、满减券、运费券
  18. Ubuntu系统管理 —— 磁盘的初始化及自动挂载
  19. php酒店入住时间怎么算,宾馆早上6点入住怎么算?正规宾馆上午八点开房应该到什么时间算一天...
  20. X64汇编语言寄存器结构及其与X86架构编程区别

热门文章

  1. 动手使用ABAP Channel开发一些小工具,提升日常工作效率
  2. 处理错误:ORA-27101: shared memory realm does not exist
  3. Linux下如何查看系统启动时间和运行时间(转)
  4. 由单例模式学到:静态构造函数和静态字段
  5. JavaScript open() 函数
  6. [更正]谈获取当前系统类型(SP OR PPC)
  7. Windows打印机驱动开发笔记(一)
  8. spring的自生一个bug
  9. android连接Mysql数据库之JDBC方式
  10. 跨系统远程登录用Linux系统远程登录windows7