`

黑马程序员-编程基础01-进制

 
阅读更多
------- android培训java培训、期待与您交流! ----------

Java中整数的三种表现形式:

十进制:0-9,逢10进1

八进制:0-7,逢8进1,以0开头表示

十六进制:0-9,A-F,逢16进1,以0x开头表示


在计算机中二进制数的表现形式:

正的二进制数的最高位为0,负的二进制数的最高位为1,由此可知,计算机中二进制数的最高位是符号位。

在计算机中如果用二进制表示负数,首先要将这个数的正数的二进制表现形式取反,然后再加1

这里拿Java中的byte(1字节-->8位)举例,如:

01111-1111---> 127(这个正数的二进制表现形式)

如果要表示-127,首先对127取反

0111-1111 ---> 1000-0000 

然后再加1

1000-0000 ---> 1000-0001

如果要得到这个负的二进制数的正的二进制数的表现形式,要将这个负的二进制数取反,然后再加1


数据类型强转:

这里还是拿Java中的byte(1字节-->8位)举例,如:

1. byte b = 127;    b = (byte) b + 1;   b=?

    0000-0000-0111-1111---> 127(首先在运算前会提升数据类型为int,这里为了书写方便,以short代替)

  +0000-0000-0000-0001↴

  =0000-0000-1000-0000 ---> 这时的结果为128,但是对结果进行了强转,导致前8位丢失,出现下面的情况

  =                 1000-0000 ---> 因为在计算机中二进制数的高位为符号位,这里为1,所以它是负数(-128),                                                                  然后对其执行下面的操作

  =                 0111-1111 ---> 首先对其进行取反

  +                 0000-0001 ---> 再对其加1

  =                 1000-0000 ---> 这就是127+1再强转为byte在计算机中的二进制表现形式,对应十进制数-128


二进制移位:

<<(左移):被操作数乘以2的移动位数次幂(3 << 3 --> 3 * (2*2*2) --> 24)↴

             0000-0000-0000-0011  << 3(左移3位后) ↴

             0000-0000-0001-1000 ---> 24

>>(有符号右移,高位按原先高位值来补):被操作数除以2的移动位数次幂(-12 >> 2 --> -12 / (2*2) --> -3)↴

             0000-0000-0000-0000-0000-0000-0000-1100  ---> 12 

             1111-1111-1111-1111-1111-1111-1111-0011  ---> 取反 

            +0000-0000-0000-0000-0000-0000-0000-0001 ---> +1 

             1111-1111-1111-1111-1111-1111-1111-0100  ---> -12(得到-12在计算机中的二进制表现形式) 


             1111-1111-1111-1111-1111-1111-1111-1101  << 3 (右移2位后) ---> -3 ↴

             0000-0000-0000-0000-0000-0000-0000-0010  ---> -3 (得到-3在计算机中的二进制表现形式

             0000-0000-0000-0000-0000-0000-0000-0001  ---> +1 

             0000-0000-0000-0000- 0000-0000-0000-0011  ---> 3


>>>(无符号右移,高位补0):被操作数除以2的移动位数次幂(-12 >> 2 --> -12 / (2*2) --> 1073741821)↴

             0000-0000-0000-0000-0000-0000-0000-1100  ---> 12 


             1111-1111-1111-1111-1111-1111-1111-0011  ---> 取反 

            +0000-0000-0000-0000-0000-0000-0000-0001 ---> +1 

             1111-1111-1111-1111-1111-1111-1111-0100  ---> -12 (得到-12在计算机中的二进制表现形式) 


             00111111-1111-1111-1111--1111-1111-1101  <<< 3 (右移2位后,前两位为0,变成了正数) ---> 1073741821

------- android培训java培训、期待与您交流! ----------   
详细请查看:http://edu.csdn.net/heima/
分享到:
评论

相关推荐

    黑马程序员-Qt讲义.pdf

    Qt提供了基本的文件操作接口,支持二进制文件和文本文件的读写操作。Socket通信是网络编程中不可或缺的技术,Qt支持基于TCP/IP协议的客户端和服务器端编程,以及UDP通信和组播技术。 多线程是现代应用程序中用来...

    B站黑马程序员Python教程学习笔记.zip

    【Python编程语言基础】 Python是一种高级、通用的编程语言,以其简洁、易...通过黑马程序员的Python教程,你将逐步建立起扎实的Python编程基础,并能应对各种实际问题,为进一步深入学习和应用Python打下坚实的基础。

    黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义.rar

    《黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义》是一份针对C++编程初学者精心制作的教程资料,旨在帮助学习者深入理解和提升C++编程技能。这份讲义涵盖了许多关键的C++知识点,下面将对其进行详细解读...

    黑马程序员Java基础视频辅导班Day01

    ### 黑马程序员Java基础视频辅导班Day01知识点总结 #### Java的跨平台特性与JVM 1. **Java的跨平台性**:Java语言能够实现跨平台运行的关键在于Java虚拟机(JVM),即Java代码可以在任何安装了对应JVM的操作系统上...

    黑马程序员基础班精华笔记总汇

    ### 黑马程序员基础班精华笔记总汇 #### 计算机基础知识 - **计算机定义**:计算机是一种能够根据程序指令处理数据的电子设备。它由硬件和软件两大部分构成。 - **硬件**:包括中央处理器(CPU)、内存、硬盘、...

    黑马程序员Java基础视频辅导班Day03

    在Java编程中,运算符与流程控制是编程的基础,今天我们主要讨论的是位运算符、条件运算符以及流程控制结构,这些都是在实际编程中经常使用的概念。 1. **位运算符**: 位运算符在计算机底层处理数据时尤其重要。`...

    linux编程基础.ppt

    【Linux编程基础】是本文的核心话题,主要涵盖了Linux环境下C编程的基本概念、工具使用、编程风格和软件管理等方面。Linux编程对于入门级别的读者来说是一扇通向系统级开发的门,通过学习,读者将能够理解和掌握...

    Python课后题答案.docx

    ### Python课后题答案知识点概览 #### Python概述 ...以上知识点覆盖了Python基础语法、编程实践以及Python2.x与Python3.x的主要差异等内容,有助于初学者更好地理解Python的核心概念和技术细节。

    传智博客-黑马-2017-Python就业班-完整版视频-附带课件和资料

    【标题解析】 "传智博客-黑马-2017-Python就业班-完整版视频-附带课件和资料" 这个标题揭示了这是一套完整的Python编程学习资源...通过学习和实践,学员能够建立起扎实的Python编程基础,提升自己在就业市场的竞争力。

    黑马程序员Java基础视频辅导班Day02

    总的来说,"黑马程序员Java基础视频辅导班Day02"的内容主要是Java编程的基础,包括常量的定义、变量的声明和初始化,以及各种运算符的使用,这些都是编写Java程序不可或缺的知识。通过深入理解和掌握这些概念,可以...

    python课件(黑马程序员)

    这个“python课件(黑马程序员)”的压缩包很可能包含了该平台Python课程的讲义、代码示例、练习题等学习资源,非常适合想要系统学习Python的人群,尤其是对于初学者,可以与B站上的黑马程序员Python课程相配套...

    Linux 编程基础

    【Linux编程基础】是IT领域的基础知识之一,主要涵盖了在Linux环境下进行软件开发的基本概念、工具和规范。在学习Linux编程时,重点在于理解和掌握Linux编程风格、GNU cc编译器的使用以及程序调试技巧。 首先,...

    【黑马程序员就业班】02.C高级编程

    在“【黑马程序员就业班】02.C高级编程”这个课程中,我们将深入探讨C语言的高级特性,这些知识对于成为一名熟练的IT专业人员至关重要。C语言作为基础性且广泛应用的编程语言,其高级编程技巧是提升编程能力的关键。...

    C++核心编程.md.pdf

    C++是一种支持多种编程范式的高级编程语言,它既支持面向过程编程,也支持面向对象和泛型编程。...以上介绍了C++核心编程中内存管理的基础知识。掌握这些概念对于编写高质量、高效率的C++程序至关重要。

    黑马程序员Python视频中代码、课后习题等第四章内容

    在本资源中,“黑马程序员Python视频中代码、课后习题等第四章内容”涵盖了Python编程语言的关键概念和实践,特别是在第四章的学习阶段。这一章节通常会深入到Python的基础语法和核心特性,以便初学者能够逐步掌握...

    最全面的 C++ 笔记 【黑马程序员】.zip

    这份“最全面的 C++ 笔记 【黑马程序员】.zip”文件包含了深入学习C++所需的关键知识点,适合初学者和有一定经验的开发者。下面我们将深入探讨C++的一些核心概念和重要特性: 1. **基本语法与数据类型**:C++的基础...

    Windows MFC编程基础课件

    本课件主要涵盖了MFC编程的基础知识,包括MFC的基本概念、架构、类库以及如何使用MFC进行应用程序开发。 1. **MFC的基本概念**:MFC是一组预先编写的C++类,这些类是对Windows操作系统API的抽象和封装,提供了一套...

    C++ 二进制运算

    在计算机科学与编程领域,二进制运算是一个基础且关键的概念,尤其在底层编程、数据处理以及算法优化等方面有着广泛的应用。本文将深入探讨C++中的二进制运算,包括按位与、按位或、按位异或、按位取反以及移位运算...

    传智播客毕向东JAVA基础班教学大纲

    综上所述,毕向东的JAVA基础班教学大纲覆盖了Java编程的基础知识,从计算机语言的原理到实际开发环境的配置,再到编写和运行第一个Java程序,以及进制转换的概念。这些知识是初学者掌握Java编程所必须掌握的核心内容...

    传智播客_Java培训_毕向东_Java基础[07-IO]

    这部分是Java编程的基础之一,对于初学者来说非常重要,它涉及到文件读写、数据交换等核心操作。 #### 二、IO流的基本概念 **IO流的作用:** - **数据传输:** IO流主要用于实现不同设备间的通信和数据传输。 - **...

Global site tag (gtag.js) - Google Analytics